package org.jeecg.modules.tls.csmg.cscourse.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.tls.blog.common.ResponseResult;
import org.jeecg.modules.tls.csmg.cscourse.entity.CsCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.tls.csmg.viewmodel.admin.CourseItemsVM;
import org.jeecg.modules.tls.csmg.viewmodel.admin.CourseRequestVM;
import org.jeecg.modules.tls.csmg.viewmodel.user.CourseUserVM;

/**
 * @Description: cs_course
 * @Author: jeecg-boot
 * @Date:   2022-08-05
 * @Version: V1.0
 */
public interface ICsCourseService extends IService<CsCourse> {

    /**
     * 添加或者编辑课程方法
     * @param courseRequestVM
     * @return true代表成功  false代表失败
     */
    Boolean addCourse(CourseRequestVM courseRequestVM);

    /**
     * 获取谋一个课程详细信息
     * @param id
     * @return CourseRequestVM
     */
    CourseRequestVM getCourse(String id);

    /**
     * @description: 课程列表信息分页集合
     * @author: GGB 
     * @date: 2022/8/23 16:45
     * @param: page
     * @param: queryWrapper 
     * @return: IPage<CourseItemsVM>
     **/
    IPage<CourseItemsVM> getCourseList(Page<CsCourse> page, QueryWrapper<CsCourse> queryWrapper);

    /*
     * @description: 通过课程id删除课程信息并删除与其关联的章节，小节，视频脚本等信息
     * @author: GGB
     * @date: 2022/8/25 19:39
     * @param: id
     * @return: Boolean
     **/
    Boolean deleteCourse(String id);

    /*
     * @description:通过课程id获取用户端观看课程界面的数据
     * @author: GGB
     * @date: 2022/9/1 17:42
     * @param: id
     * @return: CourseUserVM
     **/
    CourseUserVM getCourseUserVMBYId(String id);

    ResponseResult getCourseList();
}
